package com.bestow.lease.service.impl;

import java.util.List;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.bestow.common.exception.GlobalException;
import com.bestow.common.utils.DateUtils;
import com.bestow.lease.domain.PrjBasicRiskHd;
import com.bestow.lease.service.IPrjBasicRiskHdService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bestow.lease.mapper.PrjPlanMapper;
import com.bestow.lease.domain.PrjPlan;
import com.bestow.lease.service.IPrjPlanService;

/**
 * 项目方案维护Service业务层处理
 *
 * @author liliu
 * @date 2022-12-07
 */
@Service
public class PrjPlanServiceImpl extends ServiceImpl<PrjPlanMapper, PrjPlan> implements IPrjPlanService {
    @Autowired
    private PrjPlanMapper prjPlanMapper;

    @Autowired
    private IPrjBasicRiskHdService prjBasicRiskHdService;

    /**
     * 查询项目方案维护
     *
     * @param planId 项目方案维护主键
     * @return 项目方案维护
     */
    @Override
    public PrjPlan selectPrjPlanByPlanId(Long planId) {
        return prjPlanMapper.selectPrjPlanByPlanId(planId);
    }

    /**
     * 查询项目方案维护列表
     *
     * @param prjPlan 项目方案维护
     * @return 项目方案维护
     */
    @Override
    public List<PrjPlan> selectPrjPlanList(PrjPlan prjPlan) {
        return prjPlanMapper.selectPrjPlanList(prjPlan);
    }

    /**
     * 新增项目方案维护
     *
     * @param prjPlan 项目方案维护
     * @return 结果
     */
    @Override
    public int insertPrjPlan(PrjPlan prjPlan) {
        prjPlan.setCreateTime(DateUtils.getNowDate());
        return prjPlanMapper.insertPrjPlan(prjPlan);
    }

    /**
     * 修改项目方案维护
     *
     * @param prjPlan 项目方案维护
     * @return 结果
     */
    @Override
    public int updatePrjPlan(PrjPlan prjPlan) {
        prjPlan.setUpdateTime(DateUtils.getNowDate());
        return prjPlanMapper.updatePrjPlan(prjPlan);
    }

    /**
     * 批量删除项目方案维护
     *
     * @param planIds 需要删除的项目方案维护主键
     * @return 结果
     */
    @Override
    public int deletePrjPlanByPlanIds(Long[] planIds) {
        return prjPlanMapper.deletePrjPlanByPlanIds(planIds);
    }

    /**
     * 删除项目方案维护信息
     *
     * @param planId 项目方案维护主键
     * @return 结果
     */
    @Override
    public int deletePrjPlanByPlanId(Long planId) {
        return prjPlanMapper.deletePrjPlanByPlanId(planId);
    }

    /**
     * 生成项目方案excel
     *
     * @param planId 项目方案维护主键
     * @return 结果
     */
    @Override
    public boolean prjPlanCreatExcel(Long planId){
        checkPlanData(planId);

        return true;
    };

    /* 项目方案生成前检验 */
    private void checkPlanData(Long planId){
        //1.子项目是否选择 项目未选择，请检查

        //2.放款前题是否维护 每个项目至少要维护一个放款前提-投放安排，请检查 HN_PRJ_BASIC_RISK_HD
        if(prjBasicRiskHdService.count(new QueryWrapper<PrjBasicRiskHd>().eq("plan_id",planId))<0){
            throw new GlobalException("放款前提未维护，请检查！");
        }
        if(true){
            throw new GlobalException("每个项目至少维护一个放款前提-投放安排，请检查！");
        }

        //3.项目信息是否维护 请先维护项目信息再生成项目方案！
        if(false){
            throw new GlobalException("项目信息未维护，请检查！");
        }
        //
    }
}
